from .base import BaseCollector
from .etf_collector import ETFCollector
from .lof_collector import LOFCollector
from .money_collector import MoneyCollector
from .collect_all import collect_all

# 版本号
__version__ = '1.0.0'

# 导出所有采集器类
__all__ = [
    'BaseCollector',
    'ETFCollector',
    'LOFCollector',
    'MoneyCollector',
    'collect_all'
]

# 采集器配置
COLLECTOR_CONFIG = {
    'ETF': {
        'base_url': 'http://www.etf.group/data',
        'apis': {
            'all': 'api1.php',
            'hot': 'api1_hot.php',
            'new': 'api1_new.php'
        }
    },
    'LOF': {
        'base_url': 'http://www.etf.group/data',
        'apis': {
            'all': 'api3.php'
        }
    },
    'MONEY': {
        'base_url': 'http://www.etf.group/data',
        'apis': {
            'all': 'api2.php'
        }
    }
}

# 请求头配置
DEFAULT_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0'
}

# 采集间隔配置（秒）
COLLECT_INTERVAL = {
    'ETF': 300,    # 5分钟
    'LOF': 300,    # 5分钟
    'MONEY': 300   # 5分钟
}

def get_collector(fund_type):
    """
    获取指定类型的采集器实例
    
    Args:
        fund_type: 基金类型，可选值：'ETF', 'LOF', 'MONEY'
        
    Returns:
        对应的采集器实例
    """
    collectors = {
        'ETF': ETFCollector,
        'LOF': LOFCollector,
        'MONEY': MoneyCollector
    }
    
    collector_class = collectors.get(fund_type.upper())
    if collector_class:
        return collector_class()
    else:
        raise ValueError(f'不支持的基金类型: {fund_type}')

def collect_by_type(fund_type):
    """
    根据基金类型执行采集
    
    Args:
        fund_type: 基金类型，可选值：'ETF', 'LOF', 'MONEY'
        
    Returns:
        bool: 采集是否成功
    """
    collector = get_collector(fund_type)
    return collector.collect_all()